///////////////////////////////////////////////////////////////////////////
// Copyright 2010 Arabic Game Developer Network, All rights reserved
// www.agd-online.com - info@agdn-online.com
//
// File: gamestates.h
// Description:
//
///////////////////////////////////////////////////////////////////////////

// This file is part of kvalleyX.
//
// kvalleyX is free software: you can redistribute it and/or modify
// it under the terms of the GNU General Public License as published by
// the Free Software Foundation, either version 3 of the License, or
// (at your option) any later version.
//
// kvalleyX is distributed in the hope that it will be useful,
// but WITHOUT ANY WARRANTY; without even the implied warranty of
// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
// GNU General Public License for more details.
//
// You should have received a copy of the GNU General Public License
// along with kvalleyX.  If not, see <http://www.gnu.org/licenses/>.

#ifndef _GAMESTATES_H
#define _GAMESTATES_H

#include "stateflow.h"
#include <string>
#include <iostream>

//////////////////// GameStateFlow deceleration ///////////////////////////////
class GameStateFlow : public CoreLib::StateFlow
{
	public:
		CoreLib::GameState* createState(
			const CoreLib::GameStateDescriptor& descriptor) const;
		void initStates();
};


// class GenericGameState : public CoreLib::GameState
// {
// 	protected:
// 		std::string stateName;
// 		GenericGameState() : stateName("GnereicGaemState") {}
// 		GenericGameState(const std::string& name) : stateName(name) {}
// };

class RedGameState : public CoreLib::GameState
{
	public:
		RedGameState() : CoreLib::GameState("red") {}
		void update();
		void render();
};

class BlueGameState : public CoreLib::GameState
{
	public:
 		BlueGameState() : CoreLib::GameState("blue") {}
		void update();
		void render();
};

class GreenGameState : public CoreLib::GameState
{
	public:
 		GreenGameState() : CoreLib::GameState("green") {}
		void update();
		void render();
};

#endif